package com.dragon.modules.yuegou.client.wechat_mini.request;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;

import javax.annotation.Nullable;

/**
 * 获取小程序二维码的请求数据封装类
 * 
 * @author liuwu
 *
 */
@JsonInclude(JsonInclude.Include.NON_NULL)
public class QrcodeRequest {

	/**
	 * 扫码进入的小程序页面路径，最大长度 128 字节，不能为空；对于小游戏，可以只传入 query 部分，来实现传参效果，如：传入
	 * "?foo=bar"，即可在 wx.getLaunchOptionsSync 接口中的 query 参数获取到 {foo:"bar"}。
	 */
	private String path;

	/**
	 * 二维码的宽度，单位 px。最小 280px，最大 1280px
	 */
	@Nullable
	private Integer width;

	/**
	 * 自动配置线条颜色，如果颜色依然是黑色，则说明不建议配置主色调
	 */
	@Nullable
	@JsonProperty("auto_color")
	private Boolean autoColor;

	/**
	 * auto_color 为 false 时生效，使用 rgb 设置颜色 例如 {"r":"xxx","g":"xxx","b":"xxx"} 十进制表示
	 */
	@Nullable
	@JsonProperty("line_color")
	private Boolean lineColor;

	/**
	 * 是否需要透明底色，为 true 时，生成透明底色的小程序码
	 */
	@Nullable
	@JsonProperty("is_hyaline")
	private Boolean isHyaline;

	/**
	 * 获取扫码进入的小程序页面路径，最大长度 128 字节，不能为空；对于小游戏，可以只传入 query 部分，来实现传参效果，如：传入
	 * "?foo=bar"，即可在 wx.getLaunchOptionsSync 接口中的 query 参数获取到 {foo:"bar"}。
	 * 
	 * @return path
	 */
	public String getPath() {
		return path;
	}

	/**
	 * 设置扫码进入的小程序页面路径，最大长度 128 字节，不能为空；对于小游戏，可以只传入 query 部分，来实现传参效果，如：传入
	 * "?foo=bar"，即可在 wx.getLaunchOptionsSync 接口中的 query 参数获取到 {foo:"bar"}。
	 * 
	 * @param path 页面路径
	 */
	public void setPath(String path) {
		this.path = path;
	}

	/**
	 * 获取二维码的宽度，单位 px。最小 280px，最大 1280px
	 * 
	 * @return 二维码的宽度，单位 px。最小 280px，最大 1280px
	 */
	@Nullable
	public Integer getWidth() {
		return width;
	}

	/**
	 * 设置二维码的宽度，单位 px。最小 280px，最大 1280px
	 * 
	 * @param width 二维码的宽度，单位 px。最小 280px，最大 1280px
	 */
	public void setWidth(@Nullable Integer width) {
		this.width = width;
	}

	/**
	 * 获取自动配置线条颜色，如果颜色依然是黑色，则说明不建议配置主色调
	 * 
	 * @return 自动配置线条颜色，如果颜色依然是黑色，则说明不建议配置主色调
	 */
	@Nullable
	public Boolean getAutoColor() {
		return autoColor;
	}

	/**
	 * 设置自动配置线条颜色，如果颜色依然是黑色，则说明不建议配置主色调
	 * 
	 * @param autoColor 自动配置线条颜色，如果颜色依然是黑色，则说明不建议配置主色调
	 */
	public void setAutoColor(@Nullable Boolean autoColor) {
		this.autoColor = autoColor;
	}

	/**
	 * 获取线条颜色，auto_color 为 false 时生效，使用 rgb 设置颜色 例如 {"r":"xxx","g":"xxx","b":"xxx"}
	 * 十进制表示
	 * 
	 * @return 线条颜色
	 */
	@Nullable
	public Boolean getLineColor() {
		return lineColor;
	}

	/**
	 * 设置线条颜色，auto_color 为 false 时生效，使用 rgb 设置颜色 例如 {"r":"xxx","g":"xxx","b":"xxx"}
	 * 十进制表示
	 * 
	 * @param lineColor 线条颜色
	 */
	public void setLineColor(@Nullable Boolean lineColor) {
		this.lineColor = lineColor;
	}

	/**
	 * 获取是否需要透明底色，为 true 时，生成透明底色的小程序码
	 * 
	 * @return 是否需要透明底色，为 true 时，生成透明底色的小程序码
	 */
	@Nullable
	public Boolean getIsHyaline() {
		return isHyaline;
	}

	/**
	 * 设置是否需要透明底色，为 true 时，生成透明底色的小程序码
	 * 
	 * @param isHyaline 是否需要透明底色，为 true 时，生成透明底色的小程序码
	 */
	public void setIsHyaline(@Nullable Boolean isHyaline) {
		this.isHyaline = isHyaline;
	}

}
